Software applications are typically developed by teams of programmers, software engineers, managers, etc. As software applications have grown in complexity and scope, so have the number of personnel involved in the development process. In many cases of large software application development, different groups of programmers, etc. will work independently on aspects of the application and periodically merge together into a single working application the results of their respective efforts. Keeping track of the efforts and milestones of the individual teams, as well as the milestones of the merged product can be daunting.
Moreover, once a given software application is released to a customer or client, an entirely new set of challenges befall the application developers. For example, software bugs may be identified and scheduled for fixes. Similarly, code enhancements may be identified that address specific customer problems not previously anticipated during the initial development process. Thus, software code that has already been fielded or released must also be closely monitored and managed in order to ensure quality and cost control (e.g., it may be wasteful for multiple teams of programmers to address the same identified software bug).
Accordingly, there is a need for improved tools for monitoring and managing the life cycle of software development, especially large scale software applications.